<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2017 河源市卓锐科技有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------
// | 开源协议 ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------

namespace plugins\AliSms\controller;

use app\common\controller\Common;
use plugins\AliSms\model\AliSms as SmsModel;  
require_once(dirname(dirname(__FILE__)).'/sdk/vendor/autoload.php'); 

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\SendBatchSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;

/** 
 * sms控制器
 * @package plugins\Sms\controller
 */
class AliSms extends Common
{
    /**
     * 发送短信
     * @param string $rec_num 短信接收号码
     * @param array $sms_param 短信模板变量
     * @param string $sms_template 短信模板名称
     * @param string $sms_extend
     *      公共回传参数，在“消息返回”中会透传回该参数；举例：用户可以传入自己下级的会员ID，
     *      在消息返回时，该会员ID会包含在内，用户可以根据该会员ID识别是哪位会员使用了你的应用
     * @author MrGuo <gj2517@qq.com>
     * @return array 
     *
     * $result = plugin_action('Sms/Sms/send', ['手机号码', [模板变量], '模板名称']);
     * if($result['code']){
     *     $this->error('发送失败，错误代码：'. $result['code']. ' 错误信息：'. $result['msg']);
     * } else {
     *     $this->success('发送成功');
     * }
     */
    public function send($mobile = '', $action="", array $param=[])
    {
        $config = plugin_config('alisms');
        if (empty($config['akid'])) {
            return array('code' => 2, 'msg' => '请填写APPKEY');
        }
        if (empty($config['aksecret'])) {
            return array('code' => 3, 'msg' => '请填写SECRET');
        }
        if (empty($mobile)) {
            return array('code' => 4, 'msg' => '请填写短信接收号码');
        }
        if (empty($action)) {
            return array('code' => 5, 'msg' => '内部指令错误');
        } 

        $template = SmsModel::getTemplate($action); 
        if (!$template) {
            return array('code' => 7, 'msg' => '找不到短信模板或未启用');
        }

        // 模板参数
        if ($template['status'] == '0') {
            return array('code' => 8, 'msg' => '短信模板已禁用');
        }
        if ($template['code'] == '') {
            return array('code' => 9, 'msg' => '请设置模板ID');
        }
        if ($template['sign_name'] == '') {
            return array('code' => 10, 'msg' => '请设置签名名称');
        }
        \plugins\AliSms\sdk\Sms::init($config);
        $ret= \plugins\AliSms\sdk\Sms::sendSms($mobile,$template['sign_name'],$template['code'],$param);

        if(isset($ret->Code)&&$ret->Code=="OK"){
          return ['code'=>0,'data'=>["mobile"=>$mobile,'param'=>$param],"msg"=>"OK"];
        }else{  
          return ['code'=>500,'data'=>["mobile"=>$mobile,'param'=>$param],"msg"=>$ret->Message];
        }
    }
}